package cn.zwx.goods.svc.rpc.facade;

import cn.zwx.base.entity.ResponseEntity;
import cn.zwx.base.exception.BizWrapException;
import cn.zwx.base.utils.PageUtil;
import cn.zwx.goods.svc.rpc.dto.*;
import cn.zwx.goods.svc.rpc.vo.InsertSpuVO;

import cn.zwx.goods.svc.rpc.vo.GenerateSkuListVO;
import cn.zwx.goods.svc.rpc.vo.SpuInfoVO;
import cn.zwx.goods.svc.rpc.vo.SpuPageListVO;

import java.util.List;

/**
 * @author zhangwenxue
 */
public interface DubboSpuService {

    /**
     * 分页查询商品列表接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<PageUtil<SpuPageListVO>> pageList(SpuPageListDTO dto)throws BizWrapException;
    /**
     * 查询商品详情接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<SpuInfoVO> info(SpuInfoDTO dto)throws BizWrapException;

    /**
     * 根据商品规格生成sku列表
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<List<GenerateSkuListVO>> generateSkuList(GenerateSkuListDTO dto)throws BizWrapException;

    /**
     * 新增商品接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<InsertSpuVO> insert(InsertSpuDTO dto)throws BizWrapException;

    /**
     * 修改商品接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<Void> modify(ModifySpuDTO dto)throws BizWrapException;

    /**
     * 删除商品接口
     * @param dto 请求参数
     * @return 返回参数
     * @throws BizWrapException 业务异常
     */
    ResponseEntity<Void> delete(DeleteSpuDTO dto)throws BizWrapException;

}
